import Vue from "vue";
import Vuex from "vuex";
import createPersistedState from "vuex-persistedstate";

Vue.use(Vuex);

export default new Vuex.Store({
    state: {
        collapse: false,
        tabList: [{name: "首页", path: "/"}],
        userId: null,
        roleList: null,
        avatar: null,
        nickname: null,
        intro: null,
        webSite: null,
        userMenuList: []
    },
    mutations: {
        saveTab(state, tab) {
            if (state.tabList.findIndex(item => item.path === tab.path) == -1) {
                state.tabList.push({name: tab.name, path: tab.path});
            }
        },
        removeTab(state, tab) {
            var index = state.tabList.findIndex(item => item.name === tab.name);
            state.tabList.splice(index, 1);
        },
        resetTab(state) {
            state.tabList = [{name: "首页", path: "/"}];
        },
        trigger(state) {
            state.collapse = !state.collapse;
        },
        login(state, user) {
            state.userId = user.userInfoId;
            state.roleList = user.roleList;
            state.avatar = user.avatar;
            state.nickname = user.nickname;
            state.intro = user.intro;
            state.webSite = user.webSite;
        },
        saveUserMenuList(state, userMenuList) {
            state.userMenuList = userMenuList;
        },
        logout(state) {
            state.userId = null;
            state.roleList = null;
            state.avatar = null;
            state.nickname = null;
            state.intro = null;
            state.webSite = null;
            state.userMenuList = [];
        },
        updateAvatar(state, avatar) {
            state.avatar = avatar;
        },
        updateUserInfo(state, user) {
            state.nickname = user.nickname;
            state.intro = user.intro;
            state.webSite = user.webSite;
        }
    },
    actions: {},
    modules: {},
    plugins: [
        createPersistedState({
            storage: window.sessionStorage
        })
    ]
});
